# -*- coding: UTF-8 -*-
from django.core import template_loader
from django.core.exceptions import Http404
from django.core.extensions import DjangoContext as Context
from django.models.core import flatfiles
from django.utils.httpwrappers import HttpResponse
from django.conf.settings import SITE_ID

def flat_file(request, url):
    """
    Vue pour les fichiers bruts

    Modèles de données : `core.flatfiles`
    Modèles : Cette vue utilise le modèle défini par le champ ``template_name``,
        ou `flatfiles/default` si template_name n'est pas défini.
    Contexte :
        flatfile
            Un objet `flatfiles.flatfiles`
    """
    if not url.startswith('/'):
        url = "/" + url
    try:
        f = flatfiles.get_object(url__exact=url, sites__id__exact=SITE_ID)
    except flatfiles.FlatFileDoesNotExist:
        raise Http404
    # S'il faut être inscrit pour accéder à la page et si l'utilisateur n'est pas
    # connecté, on le redirige vers la page de connexion.
    if request.user.is_anonymous() and f.registration_required:
        from django.views.auth.login import redirect_to_login
        return redirect_to_login(request.path)
    t = template_loader.select_template([f.template_name, 'flatfiles/default'])
    c = Context(request, {
        'flatfile': f,
    })
    return HttpResponse(t.render(c))
